<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <title>Document</title>
</head>

<body>
    <script>
        //  是一种轻量级的数据交换格式 JSON是一种比较严格的数据格式
        var json1 = '[{name: "刘德华", age: 59, sex: "男"},{name: "张学友", age: 59, sex: "男"}]';

        // JSON.parse() 是 ES5 添加的方法
        // console.log(JSON.parse(json1)); // 格式不严谨会报错

        console.log(eval(json1)); // 可以生成 JSON 对象， 

        // eval() 可以 通过字符串添加 js 代码
        // var a = 10;
        // console.log(a);
        // 可以执行 字符串代码 
        eval('var a = 10;'); // 声明的变量 是全局变量
        eval('console.log(a);')

        // 使用 eval() 转 JSON 格式的对象注意事项
        // JSON 格式 有 [.....] 和 {...}
        var json2 = "[{name: '刘德华'}, {name: '张学友'}]";
        var jsonObj1 = eval(json2);
        console.log(jsonObj1);

        var json3 = "{name: '刘德华'}"
        var jsonObj2 = eval(json3);
        // {name: 刘德华}
        console.log(jsonObj2); // 刘德华

        /*************************************************
        注意： js中 JSON 格式为 松散模式 转换为 JSON 对象需要 在 eval 函数中 加 小括号
        */
        var jsonObj3 = eval('(' + json3 + ')');
        // {name: 刘德华}
        console.log(jsonObj3); // {name: "刘德华"}


        /********************************************************************/
        // 严格模式的JSON
        var j6 = '[{"name": "刘德华", "age": 18}]'
        console.log(eval(j6));
        console.log(JSON.parse(j6));

                // 建议 以后使用 JSON 字符串 一定使用严格模式的 json 字符串

    </script>
</body>

</html>